home *** CD-ROM | disk | FTP | other *** search
-
- {*******************************************************}
- { }
- { Delphi Visual Component Library }
- { }
- { Copyright (c) 1995,96 Borland International }
- { }
- {*******************************************************}
-
- unit DBTables;
-
- {$N+,P+,S-,R-}
-
- interface
-
- uses SysUtils, Windows, Bde, Classes, Controls, Graphics, Mask, DB;
-
- type
-
- { TIndexDef }
-
- TIndexDefs = class;
-
- TIndexOptions = set of (ixPrimary, ixUnique, ixDescending,
- ixCaseInsensitive, ixExpression);
-
- TIndexDef = class
- public
- constructor Create(Owner: TIndexDefs; const Name, Fields: string;
- Options: TIndexOptions);
- destructor Destroy; override;
- property Expression: string;
- property Fields: string;
- property Name: string;
- property Options: TIndexOptions;
- property Source: string;
- end;
-
- { TIndexDefs }
-
- TTable = class;
-
- TIndexDefs = class
- public
- constructor Create(Table: TTable);
- destructor Destroy; override;
- procedure Add(const Name, Fields: string; Options: TIndexOptions);
- procedure Assign(IndexDefs: TIndexDefs);
- procedure Clear;
- function FindIndexForFields(const Fields: string): TIndexDef;
- function IndexOf(const Name: string): Integer;
- procedure Update;
- property Count: Integer;
- property Items[Index: Integer]: TIndexDef; default;
- end;
-
- { TTableDataLink }
-
- TTableDataLink = class(TDataLink)
- protected
- procedure ActiveChanged; override;
- procedure CheckBrowseMode; override;
- procedure LayoutChanged; override;
- procedure RecordChanged(Field: TField); override;
- public
- constructor Create(Table: TTable);
- destructor Destroy; override;
- end;
-
- { TTable }
-
- TBatchMode = (batAppend, batUpdate, batAppendUpdate, batDelete, batCopy);
- TTableType = (ttDefault, ttParadox, ttDBase, ttASCII);
- TLockType = (ltReadLock, ltWriteLock);
- TIndexName = type string;
-
- TIndexFiles = class(TStringList)
- public
- constructor Create(AOwner: TTable);
- function Add(const S: string): Integer; override;
- procedure Clear; override;
- procedure Delete(Index: Integer); override;
- procedure Insert(Index: Integer; const S: string); override;
- end;
-
- TTable = class(TDBDataSet)
- protected
- function CreateHandle: HDBICur; override;
- procedure DataEvent(Event: TDataEvent; Info: Longint); override;
- procedure DestroyHandle; override;
- procedure DestroyLookupCursor; override;
- procedure DoOnNewRecord; override;
- function GetCanModify: Boolean; override;
- function GetDataSource: TDataSource; override;
- function GetHandle(const IndexName, IndexTag: string): HDBICur;
- function GetLanguageDriverName: string;
- function GetLookupCursor(const KeyFields: string;
- CaseInsensitive: Boolean): HDBICur; override;
- procedure InitFieldDefs; override;
- function IsProductionIndex(const IndexName: string): Boolean;
- procedure PrepareCursor; override;
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- function BatchMove(ASource: TDataSet; AMode: TBatchMode): Longint;
- procedure AddIndex(const Name, Fields: string; Options: TIndexOptions);
- procedure ApplyRange;
- procedure CancelRange;
- procedure CloseIndexFile(const IndexFileName: string);
- procedure CreateTable;
- procedure DeleteIndex(const Name: string);
- procedure DeleteTable;
- procedure EditKey;
- procedure EditRangeEnd;
- procedure EditRangeStart;
- procedure EmptyTable;
- function FindKey(const KeyValues: array of const): Boolean;
- procedure FindNearest(const KeyValues: array of const);
- procedure GetIndexNames(List: TStrings);
- procedure GotoCurrent(Table: TTable);
- function GotoKey: Boolean;
- procedure GotoNearest;
- procedure LockTable(LockType: TLockType);
- procedure OpenIndexFile(const IndexName: string);
- procedure RenameTable(const NewTableName: string);
- procedure SetKey;
- procedure SetRange(const StartValues, EndValues: array of const);
- procedure SetRangeEnd;
- procedure SetRangeStart;
- procedure UnlockTable(LockType: TLockType);
- property IndexDefs: TIndexDefs;
- property IndexFieldCount: Integer;
- property IndexFields[Index: Integer]: TField;
- property KeyExclusive: Boolean;
- property KeyFieldCount: Integer;
- published
- property Exclusive: Boolean default False;
- property IndexFieldNames: string;
- property IndexFiles: TStrings;
- property IndexName: string;
- property MasterFields: string;
- property MasterSource: TDataSource;
- property ReadOnly: Boolean default False;
- property TableName: TFileName;
- property TableType: TTableType default ttDefault;
- property UpdateMode;
- property UpdateObject;
- end;
-
- { TBatchMove }
-
- TBatchMove = class(TComponent)
- protected
- procedure Notification(AComponent: TComponent;
- Operation: TOperation); override;
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure Execute;
- public
- property ChangedCount: Longint;
- property KeyViolCount: Longint;
- property MovedCount: Longint;
- property ProblemCount: Longint;
- published
- property AbortOnKeyViol: Boolean default True;
- property AbortOnProblem: Boolean default True;
- property CommitCount: Integer default 0;
- property ChangedTableName: TFileName;
- property Destination: TTable;
- property KeyViolTableName: TFileName;
- property Mappings: TStrings;
- property Mode: TBatchMode default batAppend;
- property ProblemTableName: TFileName;
- property RecordCount: Longint default 0;
- property Source: TDataSet;
- property Transliterate: Boolean default True;
- end;
-
- { TParam }
-
- TQuery = class;
- TParams = class;
-
- TParamType = (ptUnknown, ptInput, ptOutput, ptInputOutput, ptResult);
-
- TParam = class(TObject)
- protected
- function GetAsBCD: Currency;
- function GetAsBoolean: Boolean;
- function GetAsDateTime: TDateTime;
- function GetAsFloat: Double;
- function GetAsInteger: Longint;
- function GetAsString: string;
- function GetAsVariant: Variant;
- function IsEqual(Value: TParam): Boolean;
- procedure SetAsBCD(Value: Currency);
- procedure SetAsBoolean(Value: Boolean);
- procedure SetAsCurrency(Value: Double);
- procedure SetAsDate(Value: TDateTime);
- procedure SetAsDateTime(Value: TDateTime);
- procedure SetAsFloat(Value: Double);
- procedure SetAsInteger(Value: Longint);
- procedure SetAsString(const Value: string);
- procedure SetAsSmallInt(Value: LongInt);
- procedure SetAsTime(Value: TDateTime);
- procedure SetAsVariant(Value: Variant);
- procedure SetAsWord(Value: LongInt);
- procedure SetDataType(Value: TFieldType);
- procedure SetText(const Value: string);
- public
- constructor Create(AParamList: TParams; AParamType: TParamType);
- destructor Destroy; override;
- procedure Assign(Param: TParam);
- procedure AssignField(Field: TField);
- procedure AssignFieldValue(Field: TField; const Value: Variant);
- procedure Clear;
- procedure GetData(Buffer: Pointer);
- function GetDataSize: Word;
- procedure SetData(Buffer: Pointer);
- property AsBCD: Currency;
- property AsBoolean: Boolean;
- property AsCurrency: Double;
- property AsDate: TDateTime;
- property AsDateTime: TDateTime;
- property AsFloat: Double;
- property AsInteger: LongInt;
- property AsSmallInt: LongInt;
- property AsString: string;
- property AsTime: TDateTime;
- property AsWord: LongInt;
- property Bound: Boolean;
- property DataType: TFieldType;
- property IsNull: Boolean;
- property Name: string;
- property ParamType: TParamType;
- property Text: string;
- property Value: Variant;
- end;
-
- { TParams }
-
- TParams = class(TPersistent)
- protected
- procedure AssignTo(Dest: TPersistent); override;
- procedure DefineProperties(Filer: TFiler); override;
- public
- constructor Create; virtual;
- destructor Destroy; override;
- procedure Assign(Source: TPersistent); override;
- procedure AssignValues(Value: TParams);
- procedure AddParam(Value: TParam);
- procedure RemoveParam(Value: TParam);
- function CreateParam(FldType: TFieldType; const ParamName: string;
- ParamType: TParamType): TParam;
- function Count: Integer;
- procedure Clear;
- procedure GetParamList(List: TList; const ParamNames: string);
- function IsEqual(Value: TParams): Boolean;
- function ParamByName(const Value: string): TParam;
- property Items[Index: Word]: TParam; default;
- property ParamValues[const ParamName: string]: Variant;
- end;
-
- { TStoredProc }
-
- PServerDesc = ^TServerDesc;
- TServerDesc = record
- ParamName: string[DBIMAXSPNAMELEN];
- BindType: TFieldType;
- end;
-
- TParamBindMode = (pbByName, pbByNumber);
-
- TStoredProc = class(TDBDataSet)
- protected
- function CreateHandle: HDBICur; override;
- procedure Disconnect; override;
- function GetParamsCount: Word;
- procedure SetDBFlag(Flag: Integer; Value: Boolean); override;
- procedure SetOverLoad(Value: Word);
- procedure SetProcName(const Value: string);
- procedure SetPrepared(Value: Boolean);
- procedure SetPrepare(Value: Boolean);
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure CopyParams(Value: TParams);
- function DescriptionsAvailable: Boolean;
- procedure ExecProc;
- function ParamByName(const Value: string): TParam;
- procedure Prepare;
- procedure GetResults;
- procedure UnPrepare;
- property ParamCount: Word;
- property StmtHandle: HDBIStmt;
- property Prepared: Boolean;
- published
- property StoredProcName: string;
- property Overload: Word default 0;
- property Params: TParams;
- property ParamBindMode: TParamBindMode default pbByName;
- property UpdateObject;
- end;
-
- { TQuery }
-
- TQuery = class(TDBDataSet)
- protected
- function CreateHandle: HDBICur; override;
- procedure Disconnect; override;
- function GetDataSource: TDataSource; override;
- function GetParamsCount: Word;
- procedure SetDBFlag(Flag: Integer; Value: Boolean); override;
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure ExecSQL;
- function ParamByName(const Value: string): TParam;
- procedure Prepare;
- procedure UnPrepare;
- property Prepared: Boolean;
- property ParamCount: Word;
- property Local: Boolean;
- property StmtHandle: HDBIStmt;
- property Text: string;
- property RowsAffected: Integer;
- property SQLBinary: PChar;
- published
- property Constrained: Boolean default False;
- property DataSource: TDataSource;
- property Params: TParams;
- property ParamCheck: Boolean default True;
- property RequestLive: Boolean default False;
- property SQL: TStrings;
- property UniDirectional: Boolean default False;
- property UpdateMode;
- property UpdateObject;
- end;
-
- { TUpdateSQL }
-
- TUpdateSQL = class(TDataSetUpdateObject)
- protected
- function GetDataSet: TDataSet; override;
- procedure SetDataSet(ADataSet: TDataSet); override;
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure Apply(UpdateKind: TUpdateKind); override;
- procedure ExecSQL(UpdateKind: TUpdateKind);
- procedure SetParams(UpdateKind: TUpdateKind);
- property DataSet;
- property Query[UpdateKind: TUpdateKind]: TQuery;
- property SQL[UpdateKind: TUpdateKind]: TStrings;
- published
- property ModifySQL: TStrings index 0;
- property InsertSQL: TStrings index 1;
- property DeleteSQL: TStrings index 2;
- end;
-
- { TStringField }
-
- TStringField = class(TField)
- protected
- function GetAsBoolean: Boolean; override;
- function GetAsDateTime: TDateTime; override;
- function GetAsFloat: Double; override;
- function GetAsInteger: Longint; override;
- function GetAsString: string; override;
- function GetAsVariant: Variant; override;
- function GetDefaultWidth: Integer; override;
- procedure GetText(var Text: string; DisplayText: Boolean); override;
- function GetValue(var Value: string): Boolean;
- procedure SetAsBoolean(Value: Boolean); override;
- procedure SetAsDateTime(Value: TDateTime); override;
- procedure SetAsFloat(Value: Double); override;
- procedure SetAsInteger(Value: Longint); override;
- procedure SetAsString(const Value: string); override;
- procedure SetVarValue(const Value: Variant); override;
- public
- constructor Create(AOwner: TComponent); override;
- property Value: string;
- published
- property EditMask;
- property Size default 20;
- property Transliterate: Boolean default True;
- end;
-
- { TNumericField }
-
- TNumericField = class(TField)
- public
- constructor Create(AOwner: TComponent); override;
- published
- property Alignment default taRightJustify;
- property DisplayFormat: string;
- property EditFormat: string;
- end;
-
- { TIntegerField }
-
- TIntegerField = class(TNumericField)
- protected
- function GetAsFloat: Double; override;
- function GetAsInteger: Longint; override;
- function GetAsString: string; override;
- function GetAsVariant: Variant; override;
- procedure GetText(var Text: string; DisplayText: Boolean); override;
- function GetValue(var Value: Longint): Boolean;
- procedure SetAsFloat(Value: Double); override;
- procedure SetAsInteger(Value: Longint); override;
- procedure SetAsString(const Value: string); override;
- procedure SetVarValue(const Value: Variant); override;
- public
- constructor Create(AOwner: TComponent); override;
- function IsValidChar(Ch: Char): Boolean; override;
- property Value: Longint;
- published
- property MaxValue: Longint default 0;
- property MinValue: Longint default 0;
- end;
-
- { TSmallintField }
-
- TSmallintField = class(TIntegerField)
- public
- constructor Create(AOwner: TComponent); override;
- end;
-
- { TWordField }
-
- TWordField = class(TIntegerField)
- public
- constructor Create(AOwner: TComponent); override;
- end;
-
- { TAutoIncField }
-
- TAutoIncField = class(TIntegerField)
- public
- constructor Create(AOwner: TComponent); override;
- end;
-
- { TFloatField }
-
- TFloatField = class(TNumericField)
- protected
- function GetAsFloat: Double; override;
- function GetAsInteger: Longint; override;
- function GetAsString: string; override;
- function GetAsVariant: Variant; override;
- procedure GetText(var Text: string; DisplayText: Boolean); override;
- procedure SetAsFloat(Value: Double); override;
- procedure SetAsInteger(Value: Longint); override;
- procedure SetAsString(const Value: string); override;
- procedure SetVarValue(const Value: Variant); override;
- public
- constructor Create(AOwner: TComponent); override;
- function IsValidChar(Ch: Char): Boolean; override;
- property Value: Double;
- published
- property Currency: Boolean default False;
- property MaxValue: Double;
- property MinValue: Double;
- property Precision: Integer default 15;
- end;
-
- { TCurrencyField }
-
- TCurrencyField = class(TFloatField)
- public
- constructor Create(AOwner: TComponent); override;
- published
- property Currency default True;
- end;
-
- { TBCDField }
-
- TBCDField = class(TNumericField)
- public
- FCurrency: Boolean;
- FCheckRange: Boolean;
- FMinValue: Currency;
- FMaxValue: Currency;
- procedure SetCurrency(Value: Boolean);
- procedure SetMaxValue(Value: Currency);
- procedure SetMinValue(Value: Currency);
- procedure UpdateCheckRange;
- protected
- function GetAsCurrency: Currency; override;
- function GetAsFloat: Double; override;
- function GetAsInteger: Longint; override;
- function GetAsString: string; override;
- function GetAsVariant: Variant; override;
- procedure GetText(var Text: string; DisplayText: Boolean); override;
- function GetValue(var Value: Currency): Boolean;
- procedure SetAsCurrency(Value: Currency); override;
- procedure SetAsFloat(Value: Double); override;
- procedure SetAsInteger(Value: Longint); override;
- procedure SetAsString(const Value: string); override;
- procedure SetVarValue(const Value: Variant); override;
- public
- constructor Create(AOwner: TComponent); override;
- function IsValidChar(Ch: Char): Boolean; override;
- property Value: Currency;
- published
- property Currency: Boolean default False;
- property MaxValue: Currency;
- property MinValue: Currency;
- property Size default 4;
- end;
-
- { TBooleanField }
-
- TBooleanField = class(TField)
- protected
- function GetAsBoolean: Boolean; override;
- function GetAsString: string; override;
- function GetAsVariant: Variant; override;
- function GetDefaultWidth: Integer; override;
- procedure SetAsBoolean(Value: Boolean); override;
- procedure SetAsString(const Value: string); override;
- procedure SetVarValue(const Value: Variant); override;
- public
- constructor Create(AOwner: TComponent); override;
- property Value: Boolean;
- published
- property DisplayValues: string;
- end;
-
- { TDateTimeField }
-
- TDateTimeField = class(TField)
- protected
- function GetAsDateTime: TDateTime; override;
- function GetAsFloat: Double; override;
- function GetAsString: string; override;
- function GetAsVariant: Variant; override;
- procedure GetText(var Text: string; DisplayText: Boolean); override;
- procedure SetAsDateTime(Value: TDateTime); override;
- procedure SetAsFloat(Value: Double); override;
- procedure SetAsString(const Value: string); override;
- procedure SetVarValue(const Value: Variant); override;
- public
- constructor Create(AOwner: TComponent); override;
- property Value: TDateTime;
- published
- property DisplayFormat: string;
- property EditMask;
- end;
-
- { TDateField }
-
- TDateField = class(TDateTimeField)
- public
- constructor Create(AOwner: TComponent); override;
- end;
-
- { TTimeField }
-
- TTimeField = class(TDateTimeField)
- public
- constructor Create(AOwner: TComponent); override;
- end;
-
-
- { TBinaryField }
-
- TBinaryField = class(TField)
- protected
- function GetAsVariant: Variant; override;
- procedure SetVarValue(const Value: Variant); override;
- public
- constructor Create(AOwner: TComponent); override;
- published
- property Size default 16;
- end;
-
- { TBytesField }
-
- TBytesField = class(TBinaryField)
- public
- constructor Create(AOwner: TComponent); override;
- end;
-
- { TVarBytesField }
-
- TVarBytesField = class(TBytesField)
- public
- constructor Create(AOwner: TComponent); override;
- end;
-
- { TBlobField }
-
- TBlobType = ftBlob..ftTypedBinary;
-
- TBlobField = class(TField)
- protected
- procedure AssignTo(Dest: TPersistent); override;
- procedure FreeBuffers; override;
- function GetAsString: string; override;
- function GetAsVariant: Variant; override;
- procedure GetText(var Text: string; DisplayText: Boolean); override;
- procedure SetAsString(const Value: string); override;
- procedure SetVarValue(const Value: Variant); override;
- public
- constructor Create(AOwner: TComponent); override;
- procedure Assign(Source: TPersistent); override;
- procedure Clear; override;
- procedure LoadFromFile(const FileName: string);
- procedure LoadFromStream(Stream: TStream);
- procedure SaveToFile(const FileName: string);
- procedure SaveToStream(Stream: TStream);
- procedure SetFieldType(Value: TFieldType); override;
- procedure SetText(const Value: string); override;
- property Value: string;
- published
- property BlobType: TBlobType;
- property Size default 0;
- end;
-
- { TMemoField }
-
- TMemoField = class(TBlobField)
- public
- constructor Create(AOwner: TComponent); override;
- published
- property Transliterate: Boolean default True;
- end;
-
- { TGraphicField }
-
- TGraphicField = class(TBlobField)
- public
- constructor Create(AOwner: TComponent); override;
- end;
-
- { TBlobStream }
-
- TBlobStreamMode = (bmRead, bmWrite, bmReadWrite);
-
- TBlobStream = class(TStream)
- public
- constructor Create(Field: TBlobField; Mode: TBlobStreamMode);
- destructor Destroy; override;
- function Read(var Buffer; Count: Longint): Longint; override;
- function Write(const Buffer; Count: Longint): Longint; override;
- function Seek(Offset: Longint; Origin: Word): Longint; override;
- procedure Truncate;
- end;
-
- { TFieldDataLink }
-
- TFieldDataLink = class(TDataLink)
- protected
- procedure ActiveChanged; override;
- procedure EditingChanged; override;
- procedure FocusControl(Field: TFieldRef); override;
- procedure LayoutChanged; override;
- procedure RecordChanged(Field: TField); override;
- procedure UpdateData; override;
- public
- function Edit: Boolean;
- procedure Modified;
- procedure Reset;
- property CanModify: Boolean;
- property Control: TWinControl;
- property Editing: Boolean;
- property Field: TField;
- property FieldName: string;
- property OnDataChange: TNotifyEvent;
- property OnEditingChange: TNotifyEvent;
- property OnUpdateData: TNotifyEvent;
- property OnActiveChange: TNotifyEvent;
- end;
-
- function BCDToCurr(const BCD: FMTBcd; var Curr: Currency): Boolean;
- function CurrToBCD(Curr: Currency; var BCD: FMTBcd; Precision,
- Decimals: Integer): Boolean;
-
- implementation
-